package com.rm.zeyou.pay.wxpay.service;

import com.rm.zeyou.pay.wxpay.vo.*;

import java.util.Map;

/**
 * @Author ZhangKeChen
 * @Date 2022/9/29
 * @Description
 */

public interface WechatPayService {
    /**
     * 创建订单
     * weChatCreateOrder.type        必填：交易类型：jsapi（含小程序）、app、h5、native
     * weChatCreateOrder.totalPrice  必填：商品金额（单位：分）
     * weChatCreateOrder.outTradeNo  必填：商家订单号
     * weChatCreateOrder.description 必填：商品描述（商品标题）
     * weChatCreateOrder.notifyUrl   必填：支付回掉地址
     * weChatCreateOrder.openId      特殊必填：支付用户的OpenId，JSAPI支付时必填
     * 关于支付结果：
     * APP支付、JSAPI支付为[预支付交易会话标识]
     * Native支付为[二维码链接]
     * H5支付为[支付跳转链接]
     */
    Map<String, String> createOrder(WeChatCreateOrderVO weChatCreateOrder);


    /**
     * 退款接口
     *
     * @param wxRefundInfoVo
     * @return
     */
    WeChatRefundReturnVO refundOrder(WeChatRefundVO wxRefundInfoVo);

    /**
     * 查询订单
     *
     * @return
     */
    QueryOrderVO QueryOrder(String transaction_id);

    /**
     * 功能描述: 关闭订单
     * POST  接口响应204，无内容  即成功
     *
     * @param out_trade_no 商户系统内部订单号
     * @return
     */
    String CloseOrder(String out_trade_no);

    /**
     * 添加分账接收方
     * @Date 2024 12月 18 15:59
     * @param account
     * @return
     */
    AddShareAcountResponseVo addShareCount(String account);
    /**
     * 分账（分账之前下单接口需要设置分账字段为true，并需调用添加分账接收方接口，分账方账户不能重复  需要合并重复的记录 同时分账金额必须大于1分）
     * @Date 2024 12月 16 13:31
     * @param sharingOrderVo
     * @return
     */
    SharingOrderResponseVo sharingOrder(SharingOrderVo sharingOrderVo);
}
